<?php

namespace App\Http\Controllers\Api\V1;

use App\Http\Controllers\Controller;
use App\Models\Apiuser;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;

class LoginController extends BaseController
{
    /*
     * 接口登录
     */
    public function index(Request $request){
        //接收参数 并进行校验
        $params =$request->all();
        //通过 Facades的 Validator 自定义验证
        //不写第三个参数 message 下方调用也会自动翻译成 中文
        $validated = Validator::make($params,[
            'username' => ['required'],
            'password' => ['required'],
        ] );
     //   print_r($validated->messages());die();

        //如果数据有问题
        if ($validated->fails()){
            // $validated->messages()的验证信息 是一个对象 用 echo 输出会报乱码
           $errorMsg = $validated->messages();

           if(!is_array($errorMsg)){
               $errorMsg =$errorMsg->toArray();
           }

           /*
            * 转换后的数组是这样的 前端可阅读效率不高 所以要进行重构数据
            * Array
             (
                   1  [username] => Array
              (
                       2  [0] => 用户名 不能为空。
              )

                  1   [password] => Array
              (
                       2 [0] => 密码 不能为空。
              )

             )
            */

            $errorArr=[];
            foreach ($errorMsg as $key=>$val){

                $errorArr[]= $key.":".$val[0];

            }

            return $this->writeJson(0,null,$errorArr);

        }


        $res= auth()->guard('apiweb')->attempt($params);

     //   dd($res);die();
        if ($res){
            //如果成功 发放 token

            //返回的是 当前用户的 信息
            $user=  auth()->guard('apiweb')->user();

        //通过 模型继承的 HasToken 中的 createToken 方法 生成 token
            //此时会向数据库 添加一条 token信息 ，返回 生成的 token accessToken：密钥   和 token： 填入数据库的信息
             $token =  $user->createToken('api')->accessToken;    //api是 token 的名字

            return $this->writeJson(0,[
                'token'=>$token,
                'expire'=>7200

            ],'权限验证成功');
        }



        return  $this->writeJson(10001,null,"权限验证失败");

    }

    /*
     * 短信
     */
    public function sendSms()
    {
        echo '发送短信';
    }
}
